-
Notifications
You must be signed in to change notification settings - Fork 519
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rpm2img: stripe root filesystem #2863
Conversation
Leaving this in draft while I make the code changes more self-documenting and investigate mechanisms to apply them only to AWS variants. |
I wonder if this would be useful for metal variants as well. In most cases, this should result in a performance improvement since a typical block size would align on that boundary. |
It's a good point, this is probably a net benefit on most random access devices. The optimal alignment depends a lot on the underlying storage medium, but it would be nice to have data. Then again, data on metal would be a bit like boiling the ocean... |
Aligning the root filesystem along 4MiB boundaries provides a subtle but measureable performance improvement in Bottlerocket's boot process.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🪄 awesome work!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💨
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🐎
Nice work!! |
Description of changes:
I had this idea while looking at our filesystem settings and reading the manpages for ext4, then found this article on the web, suggesting others have had this idea to improve SSD performance as well. I used this article for some guidance on how to select the
stride
andstripe_width
.The other change here is to disable
lazy_itable_init
. Enabled by default, this performs inode table initialization at boot in the background, speeding up calls tomkfs.ext4
. Instead, we're opting to slow down our filesystem creation for added safety and speed at boot.Some useful
manpages
snippets:Testing done:
Experimentally, this results in a performance improvement to Bottlerocket (Welch's t-test with p value < 0.00000).
I also tested using a 512kb stripe size based on some suggestion of a 512kb stripe size in the EBS direct documentation but experimentation did not conclusively indicate an improvement.
(click me)
Terms of contribution:
By submitting this pull request, I agree that this contribution is dual-licensed under the terms of both the Apache License, version 2.0, and the MIT license.